ひとりNavigation API Advent Calendar 04日目
https://gyazo.com/7ecfc77dab54873072b81c5936c96d5b
これはひとりNavigation API Advent Calendarの4日目です
Navigation APIのアドカレですが少し脱線してHistory APIについても調べてみます
History APIには何があって何が足りないのかを知るため
仕様
https://html.spec.whatwg.org/multipage/nav-history-apis.html#the-history-interface
Living Standardにまとめられている
MDN
History API - Web APIs | MDN
日本語訳だと履歴 APIってなるらしい
History API - Dive Into HTML5 (日本語訳)
原文が公開されている Dive Into HTML5 というサイトは “HTML5: Up & Running” という名前で Google Press より出版、O’Reilly Media より発売されています
その中のHistory APIに関する話の日本語訳
web-history-api/problem.md at master · dvoytenko/web-history-api · GitHub
History APIの問題点
これは明日にでも日本語訳してまとめたいyamanoku.icon
APIについて
メソッド
history.go()
セッション履歴から特定のページを読む
引数は数値が入る
history.go(2)だと2ページ後に進む
history.go(-2)だと2ページ前に戻る
history.go()とhistory.go(0)はページリロードする
history.go(1)はhistory.forward()と同等
history.go(-1)はhistory.back()と同等
history.back()
セッション履歴の1ページ前へ移動する
history.forward()
セッション履歴の1ページ先へ移動する
history.pushState()
ブラウザのセッション履歴スタックに情報を追加する
pushState(state, title, url)
引数は3つ
state
状態としてのオブジェクトが入る
title
歴史的な理由で追加されたもので省略できないらしい
空文字を渡しておくと良い
ここの歴史的理由を探るだけでも1記事になりそうな気配があるなyamanoku.icon
url
省略可能
現在のアドレスバーへのURLを設定できる
設定した値が不適切だと"SecurityError" DOMExceptionのエラーを返す
history.replaceState()
ブラウザのセッション履歴スタックに情報を置き換える
履歴を更新したいときに使う
現在のページでURLを書き換えたのちにページを戻ると書き換える前のURLの履歴がなくなってる状態になってる
replaceState(state, title, url)
pushState()と同一の引数
history.replaceState() にはブラウザによって呼び出し回数制限がある
とのことです
プロパティ
length
読み込まれているページのセッション履歴数
scrollRestoration
スクロール位置の復元設定
autoが自動的に戻るようにする
manualが自動で戻らないようにする
state
pushState()で記録した値を読み取る
history.pushState({ name: "Example" }, "", "example.html");ってやっておくと
history.stateには{name: "Example"}が入るようになる
イベント
PopStateEvent
window.popstateイベントのインターフェイス
プロパティ
state
プロパティと同じ
hasUAVisualTransition
ユーザーエージェント判定でView Transitionsが設定されてるかを確認する
2025-12-04時点でFirefoxのみ使えない
改めて見てみるとそんなにAPI自体が多いわけではなかったな
SPAのルーティング様式を調べるときにここを見返しに来ます